home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 1 / Gekikoh Dennoh Club Vol. 1 (Japan).7z / Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin / kowin / archive / apl / gview120.lzh / gviewsrc.lzh / hg_load.c < prev    next >
C/C++ Source or Header  |  1995-02-13  |  1KB  |  67 lines

  1. /*    Copyright 1992 H.Ogasawara (COR.)    */
  2.  
  3. #include    <corlib.h>
  4. #include    <sys_doslib.h>
  5. #include    "gview.h"
  6.  
  7. #define        HGLOADER    "hg.r -l0,0"
  8.  
  9. static int        sizex, sizey;
  10. static unsigned char    com[1024];
  11. static int        color;
  12. static unsigned char    *hg_palet;
  13.  
  14. static
  15. size_check( fname )
  16. char    *fname;
  17. {
  18.     int    fn;
  19.     unsigned char    *p;
  20.     if( (fn= OPEN( fname, 0 )) >= 0 ){
  21.         READ( fn, p= com, 1024 );
  22.         CLOSE( fn );
  23.         if( strncmp( p, "HG2", 3 ) ){
  24.             GV_Err( "hgフォーマットが違います" );
  25.             return    FALSE;
  26.         }
  27.         for( com[1023]= 0x1a ; *p != 0x1a ; p++ );
  28.         *p++= '\0';
  29.         hg_palet= p+8;
  30.         p+= 4;            /* ロード位置 */
  31.         sizex= ((p[1]<<8)+*p)*8; p+= 2;    /* サイズX */
  32.         sizey= (p[1]<<8)+*p;     p+= 2;    /* サイズY */
  33.         return    TRUE;
  34.     }
  35.     GV_Err( "hgオープンできません" );
  36.     return    FALSE;
  37. }
  38.  
  39. GVIEW *
  40. GV_Load_Hg( fname )
  41. char    *fname;
  42. {
  43.     if( size_check( fname ) ){
  44.         GVIEW    *gp;
  45.         if( !(gp= GV_Alloc( sizex, sizey, WindowAttrGraphic16,
  46.                             fname, com+7, 0 )) ){
  47.             GV_Err( "メモリが足りません" );
  48.             return    NULL;
  49.         }
  50.         if( GV_VramGetExec( HGLOADER, fname, gp ) ){
  51.             MFREE( gp );
  52.             GV_Err2( HGLOADER, "実行できませんでした" );
  53.             return    NULL;
  54.         }
  55.         {
  56.             unsigned short    *str= gp->palet;
  57.             unsigned char    *ptr= hg_palet;
  58.             int    i= GV_PaletSize( gp->color );
  59.             for(; i-- ; ptr+= 2 )
  60.                 *str++= (ptr[1]<<8)+ *ptr;
  61.         }
  62.         GV_PaletToBase( gp );
  63.         return    gp;
  64.     }
  65.     return    NULL;
  66. }
  67.